#ifndef LZP_H_
#define LZP_H_

#include "CompresorHuffman.h"
#include "Indice.h"
#include "BloqueTexto.h"
#include "Compresion.h"

class LZP
{
	private:
		Indice indice;
		CompresorHuffman compresorHuffman;
		BloqueTexto bloqueTexto;
		
		Compresion bloqueComprimido[];
		char bloqueDescomprimido[];
		
		int sizeBloqueComprimido;
		int sizeBloqueDescomprimido;
	
	public:
		LZP();
		virtual ~LZP();
		
		void comprimir();
		void descomprimir();
		
		/*
		 * Recibe una entidad compresion que contiene el caracter a comprimir y su
		 * posición en el bloque de texto y el contexto de 2 carácteres del mismo.
		 * 
		 * En algún momento llama al generarCompresion(...) del Indice.
		 * 
		 * Devuelve la compresion compuesta por la longitud de match y la posicion 
		 * de inicio en el bloque de texto (si hubo match).
		 */
		Compresion* generarCompresion(Compresion* compr) {
			return indice.generarCompresion(compr, bloqueTexto);	
		}	
		
};

#endif /*LZP_H_*/
